package com.example.myandroidapp.kotlin

/*
* set集合：无序，不重复、
* setOf：不可变
* mutableSetOf：可变
*
    特性	        listOf                          setOf
    元素唯一性	✅ 允许重复元素	                ❌ 自动去重，元素唯一
    顺序性	    ✅ 严格保持插入顺序	            ❌ 不保证顺序（实际实现保留插入顺序）
    索引访问	    ✅ 支持索引访问（如 list[0]）	    ❌ 不支持索引访问
    查找性能	    O(n) 线性查找	                O(1) 高效哈希查找
    实现类	    ArrayList	                    LinkedHashSet
    可变版本	    mutableListOf()	                mutableSetOf()
    适用场景	    需要顺序/重复元素的场景	            需要唯一元素/快速查找的场景
*/
fun main() {
    // 1. 创建列表（允许重复元素）
    val fruitList = listOf("🍎", "🍌", "🍊", "🍎", "🍌")
    println("列表元素: $fruitList")
    // 输出: [🍎, 🍌, 🍊, 🍎, 🍌] (保留顺序和重复)

    // 2. 创建集合（自动去重）
    val fruitSet = setOf("🍎", "🍌", "🍊", "🍎", "🍌")
    println("集合元素: $fruitSet")
    // 输出: [🍎, 🍌, 🍊] (去重，但保留插入顺序)

    var fruitSet2 = mutableSetOf("🍎", "🍌", "🍊", "🍎", "🍌")

    // 3. 索引访问对比
    println("\n列表索引访问:")
    println("第一个水果: ${fruitList[0]}") // 🍎
    println("最后一个水果: ${fruitList[fruitList.size - 1]}") // 🍌

    // 集合不支持索引访问
    // fruitSet[0] // 编译错误！
    println("\n集合元素访问:")
    println("包含苹果? ${fruitSet.contains("🍎")}") // true
    println("第一个元素: ${fruitSet.first()}") // 🍎 (但不保证总是第一个)
}